<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // 1、编写函数map(arr) 把数组中的每一位数字都增加30%
        var arr = [100, 20, 30, 15, 50, 5]
        function func(arr) {
            var arr1 = []
            arr.forEach(element => arr1.push(element * 1.3))
            return arr1

        }
        var res = func(arr)
        console.log(res) //[ 130, 26, 39, 19.5, 65, 6.5 ]


        // 2、	编写函数has(arr , 60) 判断数组中是否存在60这个元素，返回布尔类型
        var arr = [10, 20, 30, 15, 50, 5]
        function has(arr, num) {
            // 默认存在
            var flag = true
            arr.includes(num) ? null : flag = !flag
            return flag
        }
        var res = has(arr, 60)
        console.log(res)


        // 3、	编写函数norepeat(arr) 将数组的重复元素去掉，并返回新的数组 (此题为13K)
        var arr = [10, 20, 30, 15, 50, 20, 10, 100]
        function norepeat(arr) {
            return arr.filter((element, index) => arr.indexOf(element) === index)
        }
        // 方法2
        function norepeat1(arr) {
            var arr1 = []
            arr.forEach(element => !arr1.includes(element) && arr1.push(element))
            return arr1
        }
        var res = norepeat1(arr)
        console.log(res) //[ 10, 20, 30, 15, 50, 100 ]



        /*
        4、有一个从小到大排好序的数组。现输入一个数，要求按原来的规律将它插入数组中
        例如  原数组  [3,10,49,89,100]  插入一个数 15    新数组为   [3,10,15,49,89,100]
        */
        var arr = [3, 10, 49, 89, 100]
        var num = 15
        function func(arr, num) {
            // 比最小的还要小
            if (num <= arr[0]) {
                arr.unshift(num)
            }
            // 比最大的还要大
            else if (num >= arr[arr.length - 1]) {
                arr.push(num)
            }
            // 中间
            else {
                for (var i = 0; i < arr.length; i++) {
                    if (arr[i] <= num && arr[i + 1] >= num) {
                        arr.splice(i + 1, 0, num)
                        break
                    }
                }
            }
            return arr
        }
        var res = func(arr, num)
        console.log(res) //[ 3, 10, 15, 49, 89, 100 ]



        // 5、	定义一个含有10个元素的数组  计算下标为奇数的元素的平均数（自定义函数实现）
        var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
        function func(arr) {
            var arr1 = arr.filter((element, index) => index % 2)
            return arr1.reduce((prev, next) => prev + next)
        }
        var res = func(arr)
        console.log(res)


        /*
        6、某个公司采用公用电话传递数据，数据是四位的整数，在传递过程中是加密的，加密规则如下：
            每位数字都加上5,然后用除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换，
            请编写一个函数，传入原文，输出密文
        */

        var str = '7864'
        function func(str) {
            // 将['7','8','6','4',]转为数字数组[7,8,6,4]
            var arr = str.split('').map(element => parseInt(element))
            var arr1 = arr.map(element => (element + 5) % 10)
            return arr1.reverse().join('')

        }
        var res = func(str)
        console.log(res) //9132



    </script>
</body>

</html>